package com.urbane.dto.services.order;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 订单摘要 DTO（用于订单列表页展示）
 * 功能：
 *   - 减少网络传输体积，仅包含前端展示所需字段
 *   - 不包含订单明细、收货地址、支付凭证等冗余信息
 *   - 与 OrderDetail 区分，避免滥用
 *
 * 注意：
 *   - 本类仅供前端列表页使用
 *   - 详情页使用 OrderDetail
 */
@Data
@Schema(description = "订单摘要信息（列表页使用）")
public class OrderSummary {

    /**
     * 订单号（全局唯一）
     */
    @Schema(description = "订单编号，如 ORD20250405123456", example = "ORD20250405123456")
    private String orderNo;

    /**
     * 订单总金额
     */
    @Schema(description = "订单总金额（含运费）", example = "8999.00")
    private BigDecimal totalAmount;

    /**
     * 实际支付金额
     */
    @Schema(description = "实际支付金额（扣除优惠后）", example = "8899.00")
    private BigDecimal payAmount;

    /**
     * 订单状态
     */
    @Schema(description = "订单状态：PENDING_PAYMENT / PAID / SHIPPED / DELIVERED / CANCELLED", example = "PAID")
    private String status;

    /**
     * 创建时间
     */
    @Schema(description = "订单创建时间", example = "2025-04-05T10:30:00Z")
    private LocalDateTime createdAt;

    /**
     * 收货人姓名（缩略）
     */
    @Schema(description = "收货人姓名（前两位+星号）", example = "张*")
    private String receiverName;

    /**
     * 商品数量
     */
    @Schema(description = "订单中商品总数", example = "2")
    private Integer itemCount;
}
